/**
 * 数字格式化工具函数
 */

/**
 * 格式化价格为带货币符号的两位小数
 * @param price 价格数值
 * @param currency 货币符号，默认为 ¥
 * @returns 格式化后的价格字符串
 */
export const formatPrice = (price: number | string | undefined | null, currency = '¥'): string => {
  if (price === null || price === undefined || price === '') {
    return `${currency} 0.00`
  }
  
  const numPrice = Number(price)
  if (isNaN(numPrice)) {
    return `${currency} 0.00`
  }
  
  return `${currency} ${numPrice.toFixed(2)}`
}

/**
 * 格式化数字为两位小数（不带货币符号）
 * @param num 数字
 * @returns 格式化后的数字字符串
 */
export const formatNumber = (num: number | string | undefined | null): string => {
  if (num === null || num === undefined || num === '') {
    return '0.00'
  }
  
  const numValue = Number(num)
  if (isNaN(numValue)) {
    return '0.00'
  }
  
  return numValue.toFixed(2)
}

/**
 * 格式化百分比为两位小数
 * @param ratio 比例值（小数形式，如 0.15 表示 15%）
 * @returns 格式化后的百分比字符串
 */
export const formatPercentage = (ratio: number | string | undefined | null): string => {
  if (ratio === null || ratio === undefined || ratio === '') {
    return '0.00%'
  }
  
  const numRatio = Number(ratio)
  if (isNaN(numRatio)) {
    return '0.00%'
  }
  
  return `${(numRatio * 100).toFixed(2)}%`
}

/**
 * 格式化重量（千克）
 * @param weight 重量值
 * @returns 格式化后的重量字符串
 */
export const formatWeight = (weight: number | string | undefined | null): string => {
  if (weight === null || weight === undefined || weight === '') {
    return '0.00 kg'
  }
  
  const numWeight = Number(weight)
  if (isNaN(numWeight)) {
    return '0.00 kg'
  }
  
  return `${numWeight.toFixed(2)} kg`
} 